Notebookの強化版?モダンデータワークスペース「Hex」を使ってみた
大阪オフィスの玉井です。
今回はHexというSaaSを紹介します。
Hexとは
Hex is a modern platform for data science and analytics, bringing together collaborative notebooks, beautiful data apps, and enterprise-grade security.
上記の文章だと、ナンノコッチャって感じですね。
データ分析に携わる方なら、Notebookという存在は知っていると思います。肩苦しい言い方をすると、「プログラムの対話型実行環境」ですが、ブラウザ上でメモ等を差し込みながら、対話形式でプログラムを順々に実行することができます。
「対話型」「メモ等も入れられる」「結果を共有できる」あたりが、データ分析と相性が良いため、Python用のNotebookが登場し、現在では、Jupyter NotebookやGoogle Colaboratoryといったサービスが主流になっていると思います。
Hexは「モダンデータスタック用に最適化されたNotebook」という感じのSaaSです。クラウドDWHとスムーズに連携し、さらにPythonやSQLをハイブリッドで組み込めるNotebookとなっています。もちろん、他者に共有する機能もしっかりついており、(モダンデータスタック上で実施する/した)データ分析のレポート作成やチームへの共有などが、簡単に行えるようになっています。
やってみた
今回はクイックスタートを実際にやってみます。
アカウント作成
下記にアクセスし、Hexのアカウントを作成します。
ここでは詳細を説明しませんが、フリートライアルもあるし、そもそも無料のプランもあるので、どんな方でも、心置きなくアカウントを作成できると思います。
ワークスペース名を設定します。
初期画面が表示されました。
プロジェクト作成
画面右上からプロジェクトを作成します。
プロジェクト名を決めます。
まっさらなプロジェクトが作成されました。ここに、色々と作っていくことになります。
Pythonセルを追加してみる
まずは、普通のNotebookのように、Pythonを使ってみます。
ドキュメントにあるコードを貼り付けて実行します。seabornというPython用のデータ可視化ライブラリを読み込み、付属しているサンプルデータをロードします。
上記のように変数にデータを入れると、他のセルから簡単に参照できるようになります。Hexの特徴として、その変数の各種情報をわかりやすく把握できるようになっています。
例えば、上記のメニューから「View as Table display」を選択すると、この変数の中身(今回はDataFrame)をテーブル形式に展開してくれます。
SQLセルを追加してみる
今度はSQLを使ってみます。Hexは、PythonとSQLをハイブリッドで使用できるのも特徴の1つです。
SQLセルを追加し、普通のSELECT文を書いてみます。通常、SQLはDBやDWHに発行するものなので、FROM句にはテーブルやビューの名前を指定しますが、Hexでは、プロジェクト上に展開しているDataFrameに対してもSQLを実行することができるため、FROM句には、そのDataFrame名を指定します。
Displayモードを選ぶと、SQLの実行結果をスプレッドシートのように扱うことができます。
Markdownセルを追加してみる
Notebookらしく、Markdownで文章を入れることができます。
プロジェクトの一番上にMarkdownセルを追加します。
こんな感じで、通常のMarkdownが書けます。
Inputセルを追加してみる
作成したプロジェクトは、他人に共有することが想定されます。Hexでは、共有された側が操作できるようなボタンのようなものを追加することができます。
SQLセルの前に、Inputセルを追加します。今回は「Dropdown」を選びます。
先程のDataFrameのSpecies
に対してフィルタをかけられるボタンにします。
こんな感じで、ドロップダウン式のボタンができました。
SQL文のWHERE句に、Inputセルの入力項目が代入されるようにします(Jinja形式で記述)。
SELECT * from penguin_data WHERE species = {{ species }}
上記のSQLにすると、Inputセルの選択項目を変更するたびに、クエリが再実行され、結果が即時反映されます。
DAGを確認する
今回はクイックスタートなので、プロジェクト内容も簡素ですが、内容を作り込めばこむほど、セル同士の依存関係がわからなくなってきます。
Hexは、画面右上のGraphを選ぶことで、プロジェクト内のデータの依存関係をDAGで自動表示してくれます。
これで、どこを編集したら、どこに影響が出るのか、ひと目で把握することができます。
アプリ(App)として公開・共有する
作成したプロジェクトは、データアプリとして他人に共有することができます。
画面上部の「App」を選ぶと、アプリとしてのプレビューになります。
さらに、画面右上のPublishを選ぶと、内容を公開する設定になるので、説明等を入力して、公開します。
公開時点で、公開用URLがコピーできるので、別ブラウザでアクセスしてみます。すると、Hexのログイン画面になりました。Hexのアカウントを持ったユーザーだけが見られるというわけですね。
実は、公開範囲も編集することができます。ここでは、一時的にWeb全体にパブリック公開してみます。
ログイン無しで、アクセスすることができました。
おわりに
まさにNotebookの正当進化という感じで、実際のデータ分析の経緯や、最終的な分析結果などを共有できるサービスとしては、決定版みたいな印象を受けました。
今回は超基本機能しか触っていませんが、各種データウェアハウスやdbtといった、モダンなデータ分析ツールとも連携するみたいなので、そちらも試してみたいと思います。